using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._LocationReferencingTools._Configuration._LRSNetwork
{
    /// <summary>
    /// <para>Modify Route ID Padding</para>
    /// <para>Modifies the padding, null, and length properties for fields that are part of a multifield route ID.</para>
    /// <para>修改属于多字段路由 ID 的字段的 padding、null 和 length 属性。</para>
    /// </summary>    
    [DisplayName("Modify Route ID Padding")]
    public class ModifyRouteIdPadding : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public ModifyRouteIdPadding()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_feature_class">
        /// <para>LRS Network Feature Class</para>
        /// <para>The input multifield route ID network layer that contains fields for padding, null, and length values that need to be modified.</para>
        /// <para>输入多字段路径 ID 网络图层，其中包含需要修改的填充、空值和长度值的字段。</para>
        /// </param>
        /// <param name="_route_id_padding">
        /// <para>Route ID Padding</para>
        /// <para><xdoc>
        ///   <para>A table of values that specifies the field to be modified and its corresponding padding, null, and length values.</para>
        ///   <bulletList>
        ///     <bullet_item>Field—The field to be modified.</bullet_item><para/>
        ///     <bullet_item>Length—The length value of the field to be modified. The field length should be between 1 and the length of the database field.</bullet_item><para/>
        ///     <bullet_item>Variable Length—Specifies if the Length value is a variable value or a fixed value.</bullet_item><para/>
        ///     <bullet_item>Enable Padding—Specifies if the field supports padding.</bullet_item><para/>
        ///     <bullet_item>Padding Character—The padding character for the field. The default is a space.</bullet_item><para/>
        ///     <bullet_item>Padding Location—Specifies where the padding should be applied to the field value.
        ///     <bulletList>
        ///       <bullet_item>Left—Adds the padding characters to the left of the value in the field. This is the default.  </bullet_item><para/>
        ///       <bullet_item>Right—Adds the padding characters to the right of the value in the field.  </bullet_item><para/>
        ///       <bullet_item>Left and Right—Adds the padding characters to the left and right of the value in the field.  </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>Pad if Null—Specifies if the padding characters are added when the field has a null value.</bullet_item><para/>
        ///     <bullet_item>Allow Null Values—Specifies if the field supports null values.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定要修改的字段及其相应的填充值、null 值和长度值的值表。</para>
        ///   <bulletList>
        ///     <bullet_item>字段 - 要修改的字段。</bullet_item><para/>
        ///     <bullet_item>长度 - 要修改的字段的长度值。字段长度应介于 1 和数据库字段的长度之间。</bullet_item><para/>
        ///     <bullet_item>可变长度 （Variable Length） - 指定“长度”（Length） 值是可变值还是固定值。</bullet_item><para/>
        ///     <bullet_item>启用填充 - 指定字段是否支持填充。</bullet_item><para/>
        ///     <bullet_item>填充字符 - 字段的填充字符。默认值为空格。</bullet_item><para/>
        /// <bullet_item>填充位置 （Padding Location） - 指定应将填充应用于字段值的位置。
        ///     <bulletList>
        ///       <bullet_item>左 - 将填充字符添加到字段中值的左侧。这是默认设置。 </bullet_item><para/>
        ///       <bullet_item>右 - 将填充字符添加到字段中值的右侧。</bullet_item><para/>
        ///       <bullet_item>Left 和 Right - 将填充字符添加到字段中值的左侧和右侧。</bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>如果为 Null 填充 - 指定当字段具有 null 值时是否添加填充字符。</bullet_item><para/>
        ///     <bullet_item>允许空值 （Allow Null Values） - 指定字段是否支持空值。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        public ModifyRouteIdPadding(object _in_feature_class, object _route_id_padding)
        {
            this._in_feature_class = _in_feature_class;
            this._route_id_padding = _route_id_padding;
        }
        public override string ToolboxName => "Location Referencing Tools";

        public override string ToolName => "Modify Route ID Padding";

        public override string CallName => "locref.ModifyRouteIdPadding";

        public override List<string> AcceptEnvironments => ["workspace"];

        public override object[] ParameterInfo => [_in_feature_class, _route_id_padding, _out_feature_class];

        /// <summary>
        /// <para>LRS Network Feature Class</para>
        /// <para>The input multifield route ID network layer that contains fields for padding, null, and length values that need to be modified.</para>
        /// <para>输入多字段路径 ID 网络图层，其中包含需要修改的填充、空值和长度值的字段。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("LRS Network Feature Class")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_feature_class { get; set; }


        /// <summary>
        /// <para>Route ID Padding</para>
        /// <para><xdoc>
        ///   <para>A table of values that specifies the field to be modified and its corresponding padding, null, and length values.</para>
        ///   <bulletList>
        ///     <bullet_item>Field—The field to be modified.</bullet_item><para/>
        ///     <bullet_item>Length—The length value of the field to be modified. The field length should be between 1 and the length of the database field.</bullet_item><para/>
        ///     <bullet_item>Variable Length—Specifies if the Length value is a variable value or a fixed value.</bullet_item><para/>
        ///     <bullet_item>Enable Padding—Specifies if the field supports padding.</bullet_item><para/>
        ///     <bullet_item>Padding Character—The padding character for the field. The default is a space.</bullet_item><para/>
        ///     <bullet_item>Padding Location—Specifies where the padding should be applied to the field value.
        ///     <bulletList>
        ///       <bullet_item>Left—Adds the padding characters to the left of the value in the field. This is the default.  </bullet_item><para/>
        ///       <bullet_item>Right—Adds the padding characters to the right of the value in the field.  </bullet_item><para/>
        ///       <bullet_item>Left and Right—Adds the padding characters to the left and right of the value in the field.  </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>Pad if Null—Specifies if the padding characters are added when the field has a null value.</bullet_item><para/>
        ///     <bullet_item>Allow Null Values—Specifies if the field supports null values.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定要修改的字段及其相应的填充值、null 值和长度值的值表。</para>
        ///   <bulletList>
        ///     <bullet_item>字段 - 要修改的字段。</bullet_item><para/>
        ///     <bullet_item>长度 - 要修改的字段的长度值。字段长度应介于 1 和数据库字段的长度之间。</bullet_item><para/>
        ///     <bullet_item>可变长度 （Variable Length） - 指定“长度”（Length） 值是可变值还是固定值。</bullet_item><para/>
        ///     <bullet_item>启用填充 - 指定字段是否支持填充。</bullet_item><para/>
        ///     <bullet_item>填充字符 - 字段的填充字符。默认值为空格。</bullet_item><para/>
        /// <bullet_item>填充位置 （Padding Location） - 指定应将填充应用于字段值的位置。
        ///     <bulletList>
        ///       <bullet_item>左 - 将填充字符添加到字段中值的左侧。这是默认设置。 </bullet_item><para/>
        ///       <bullet_item>右 - 将填充字符添加到字段中值的右侧。</bullet_item><para/>
        ///       <bullet_item>Left 和 Right - 将填充字符添加到字段中值的左侧和右侧。</bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>如果为 Null 填充 - 指定当字段具有 null 值时是否添加填充字符。</bullet_item><para/>
        ///     <bullet_item>允许空值 （Allow Null Values） - 指定字段是否支持空值。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Route ID Padding")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _route_id_padding { get; set; }


        /// <summary>
        /// <para>Output Network Feature Class</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Network Feature Class")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_feature_class { get; set; }


        public ModifyRouteIdPadding SetEnv(object workspace = null)
        {
            base.SetEnv(workspace: workspace);
            return this;
        }

    }

}